Initialize trap tables on additional cpus.
extern void startup_32_smp(void);
extern void hypervisor_callback(void);
extern void failsafe_callback(void);
+ extern int smp_trap_init(trap_info_t *);
int i;
cpu = ++cpucount;
ctxt.trap_ctxt[i].vector = i;
ctxt.trap_ctxt[i].cs = FLAT_GUESTOS_CS;
}
- ctxt.fast_trap_idx = 0;
+ ctxt.fast_trap_idx = smp_trap_init(ctxt.trap_ctxt);
/* No LDT. */
ctxt.ldt_ents = 0;
cpu_init();
}
+int smp_trap_init(trap_info_t *trap_ctxt)
+{
+ trap_info_t *t = trap_table;
+
+ for (t = trap_table; t->address; t++) {
+ trap_ctxt[t->vector].flags = t->flags;
+ trap_ctxt[t->vector].cs = t->cs;
+ trap_ctxt[t->vector].address = t->address;
+ }
+ return SYSCALL_VECTOR;
+}
+
/*
* install_safe_pf_handler / install_normal_pf_handler: